home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 5 / QRZ Ham Radio Callsign Database - Volume 5.iso / files / tcpip / amiga / asrc29p.lha / domain.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-29  |  3.5 KB  |  128 lines

  1. #ifndef    NULLDOM
  2.  
  3. #include "global.h"
  4.  
  5. #define    MAXCNAME    10    /* Maximum amount of cname recursion */
  6.  
  7. #define    NRLIST    17
  8.  
  9. #define    TYPE_A        1    /* Host address */
  10. #define    TYPE_NS        2    /* Name server */
  11. #define    TYPE_MD        3    /* Mail destination (obsolete) */
  12. #define    TYPE_MF        4    /* Mail forwarder (obsolete) */
  13. #define    TYPE_CNAME    5    /* Canonical name */
  14. #define    TYPE_SOA    6    /* Start of Authority */
  15. #define    TYPE_MB        7    /* Mailbox name (experimental) */
  16. #define    TYPE_MG        8    /* Mail group member (experimental) */
  17. #define    TYPE_MR        9    /* Mail rename name (experimental) */
  18. #define    TYPE_NULL    10    /* Null (experimental) */
  19. #define    TYPE_WKS    11    /* Well-known sockets */
  20. #define    TYPE_PTR    12    /* Pointer record */
  21. #define    TYPE_HINFO    13    /* Host information */
  22. #define    TYPE_MINFO    14    /* Mailbox info */
  23. #define    TYPE_MX        15    /* Mail exchanger */
  24. #define    TYPE_TXT    16    /* Text strings */
  25. #define    TYPE_ANY    255    /* Matches any type */
  26.  
  27. #define    CLASS_IN    1    /* The ARPA Internet */
  28.  
  29. struct dserver {
  30.     struct dserver *prev;    /* Linked list pointers */
  31.     struct dserver *next;
  32.  
  33.     int32 address;        /* IP address of server */
  34.     int32 timeout;        /* Current timeout, ticks */
  35.     int32 srtt;        /* Smoothed round trip time, ticks */
  36.     int32 mdev;        /* Mean deviation, ticks */
  37.     int32 queries;        /* Query packets sent to this server */
  38.     int32 responses;    /* Response packets received from this server */
  39. };
  40. #define    NULLDOM    (struct dserver *)0
  41. extern struct dserver *Dlist;
  42. extern int Dsocket;        /* Socket to use for domain queries */
  43.  
  44. /* Round trip timing parameters */
  45. #define    AGAIN    8    /* Average RTT gain = 1/8 */
  46. #define    LAGAIN    3    /* Log2(AGAIN) */
  47. #define    DGAIN    4    /* Mean deviation gain = 1/4 */
  48. #define    LDGAIN    2    /* log2(DGAIN) */
  49.  
  50. /* Header for all domain messages */
  51. struct dhdr {
  52.     int16 id;        /* Identification */
  53.     char qr;        /* Query/Response */
  54. #define    QUERY        0
  55. #define    RESPONSE    1
  56.     char opcode;
  57. #define    IQUERY        1
  58.     char aa;        /* Authoratative answer */
  59.     char tc;        /* Truncation */
  60.     char rd;        /* Recursion desired */
  61.     char ra;        /* Recursion available */
  62.     char rcode;        /* Response code */
  63. #define    NO_ERROR    0
  64. #define    FORMAT_ERROR    1
  65. #define    SERVER_FAIL    2
  66. #define    NAME_ERROR    3
  67. #define    NOT_IMPL    4
  68. #define    REFUSED        5
  69.     int16 qdcount;        /* Question count */
  70.     int16 ancount;        /* Answer count */
  71.     int16 nscount;        /* Authority (name server) count */
  72.     int16 arcount;        /* Additional record count */
  73.     struct quest **qlist;    /* List of questions */
  74.     struct rr **ans;    /* List of answers */
  75.     struct rr **ns;        /* List of name servers */
  76.     struct rr **add;    /* List of additional records */
  77. };
  78. struct quest {
  79.     char *qname;        /* Domain name being sought */
  80.     int16 qtype;        /* Type (A, MX, etc) */
  81.     int16 qclass;        /* Class (IN, etc) */
  82. };
  83.  
  84. struct mx {
  85.     int16 pref;
  86.     char *exch;
  87. };
  88.  
  89. struct hinfo {
  90.     char *cpu;
  91.     char *os;
  92. };
  93.  
  94. struct soa {
  95.     char *mname;
  96.     char *rname;
  97.     int32 serial;
  98.     int32 refresh;
  99.     int32 retry;
  100.     int32 expire;
  101.     int32 minimum;
  102. };
  103.  
  104. struct rr {
  105.     char *name;        /* Domain name, ascii form */
  106.     int16 type;        /* A, MX, etc */
  107.     int16 class;        /* IN, etc */
  108.     int32 ttl;        /* Time-to-live */
  109.     int16 rdlength;        /* Length of data field */
  110.     union {
  111.         int32 addr;        /* Used for type == A */
  112.         struct soa soa;        /* Used for type == SOA */
  113.         struct mx mx;        /* Used for type == MX */
  114.         struct hinfo hinfo;    /* Used for type == HINFO */
  115.         char *name;        /* for domain names */
  116.         char *data;        /* for anything else */
  117.     } rdata;
  118.     int dupe;    /* Set by duplicate search if already in file */
  119. };
  120. #define    NULLRR    (struct rr *)0
  121. extern struct rr *Rrlist[NRLIST];
  122. extern char *Dfile;
  123.  
  124. /* In domhdr.c: */
  125. int ntohdomain __ARGS((struct dhdr *dhdr,struct mbuf **bpp));
  126.  
  127. #endif    /* NULLDOM */
  128.